Skip to content

Conversation

timgraham
Copy link
Collaborator

Without autocommit set, BaseDatabaseWrapper.close_if_unusable_or_obsolete() short-circuits early and always closes the connection after each request.

Without autocommit set, BaseDatabaseWrapper.close_if_unusable_or_obsolete()
short-circuits early and always closes the connection after each request.
@timgraham timgraham requested a review from Jibola February 7, 2025 15:32
@timgraham timgraham merged commit f5dbacb into mongodb:main Feb 12, 2025
13 checks passed
@timgraham timgraham deleted the persistent-connections branch February 12, 2025 16:01
@aclark4life
Copy link
Collaborator

@timgraham Setting autocommit does not mean that autocommit occurs, correct?

@timgraham
Copy link
Collaborator Author

Query execution uses Django and MongoDB’s default behavior of autocommit mode. Each query is immediately committed to the database.

Part of the purpose of set_autocommit() is to allow the user to disable transaction management. As far as I know, there is no way to disable transaction management in MongoDB, and this method shouldn't need any adjustments.

@aclark4life
Copy link
Collaborator

I noticed you didn't use the "backend specific" _set_autocommit(). Was that intentional and if so is that because we don't need what's in set_autocommit() ? Assuming _set_autocommit works the same (because it's called by set_autocommit) should we use that instead, because it is potentially less confusing?

@timgraham
Copy link
Collaborator Author

Since the backend has no transaction support, overriding set_autocommit() avoids a lot of uneeded things. It might be that adding support for transactions requires overriding _set_autocommit() instead (it would just be an empty method).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants